const path = require("path")
const fs = require("fs")
var OSS = require("ali-oss")
const { log } = require("console")

upload = async (req, res) => {
  let client = new OSS({
    // yourRegion填写Bucket所在地域。以华东1（杭州）为例，Region填写为oss-cn-hangzhou。
    region: "oss-cn-chengdu",
    // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
    accessKeyId: "LTAI5tHCZfeVG9u9148M1csc",
    accessKeySecret: "vLPa7tCkDqAULsBpymLzqrdNAaCmFO",
    bucket: "liulin",
    secure: true, //开启https
  })
  console.log("这是头像图片传过来的信息")
  console.log(req.files)

  const headers = {
    // 指定该Object被下载时网页的缓存行为。
    // 'Cache-Control': 'no-cache',
    // 指定该Object被下载时的名称。
    // 'Content-Disposition': 'oss_download.txt',
    // 指定该Object被下载时的内容编码格式。
    // 'Content-Encoding': 'UTF-8',
    // 指定过期时间。
    // 'Expires': 'Wed, 08 Jul 2022 16:57:01 GMT',
    // 指定Object的存储类型。
    // 'x-oss-storage-class': 'Standard',
    // 指定Object的访问权限。
    // 'x-oss-object-acl': 'private',
    // 设置Object的标签，可同时设置多个标签。
    // 'x-oss-tagging': 'Tag1=1&Tag2=2',
    // 指定CopyObject操作时是否覆盖同名目标Object。此处设置为true，表示禁止覆盖同名Object。
    // 'x-oss-forbid-overwrite': 'true',
  }
  // 文件路径
  var filePath = "./" + req.files[0].path
  // 文件类型
  var temp = req.files[0].originalname.split(".")
  var fileType = temp[temp.length - 1]
  var lastName = "." + fileType
  console.log(`这是文件的后缀${lastName}`)
  // 构建图片名
  var fileName = Date.now() + lastName
  console.log(`这是重新构建的图片名字${fileName}`)
  // 图片重命名
  fs.rename(filePath, "./public/image/" + fileName, async (err) => {
    if (err) {
      return ""
    } else {
      var localFile = "./public/image/" + fileName
      var key = fileName
      try {
        // 填写OSS文件完整路径和本地文件的完整路径。OSS文件完整路径中不能包含Bucket名称。
        // 如果本地文件的完整路径中未指定本地路径，则默认从示例程序所属项目对应本地路径中上传文件。
        const result = await client.put("headsculpture/" + key)
        // const result = await client.put('exampleobject.txt', path.normalize('D:\\localpath\\examplefile.txt'), { headers });
        // 将本地的文件删除
        fs.unlink(localFile, function () {
          console.log("文件已经删除")
        })
        res.send({
          status: 0,
          data: result.url,
        })
      } catch (e) {
        console.log(e)
      }
    }
  })
}

module.exports = {
  upload,
}
